import { Module, Global } from '@nestjs/common';
import { EventEmitterModule } from '@nestjs/event-emitter';

/**
 * 事件模块 - 基础设施层
 * 基于 NestJS 官方文档实现
 * 参考: https://docs.nestjs.cn/techniques/events
 */
@Global()
@Module({
  imports: [
    EventEmitterModule.forRoot({
      // 设置为 true 时，将允许使用通配符
      wildcard: false,
      // 事件分隔符
      delimiter: '.',
      // 设置为 true 时，如果事件没有监听器将抛出错误
      newListener: false,
      // 设置为 true 时，当事件监听器被移除时将发出事件
      removeListener: false,
      // 最大监听器数量
      maxListeners: 10,
      // 设置为 true 时，将在内存中存储包装函数的名称
      verboseMemoryLeak: false,
      // 禁用在内存泄漏警告中打印堆栈跟踪
      ignoreErrors: false,
    }),
  ],
  exports: [EventEmitterModule],
})
export class EventModule {}
